package com.cc.pokergame.utils;

import android.os.Handler;
import android.os.Looper;

import java.util.Timer;
import java.util.TimerTask;

/**
 * 定时器封装类
 */
public class TimerUtils {
    // 时间的顺序
    private Order order;
    // 时间
    private int time;
    // 定时器
    private Timer timer;
    // 监听对象
    private TimerListener listener;
    // 时间间隔
    private long duration = 1000L;

    // 初始化属性
    public TimerUtils(int time, Order order, TimerListener listener) {
        this.time = time;
        this.order = order;
        this.listener = listener;
    }

    public void setDuration(long duration) {
        this.duration = duration;
    }

    // 开始创建定时器
    public void start() {
        // 创建定时器
        timer = new Timer();
        // 设置定时 和 执行的任务
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                if (order == Order.ASCENDING) {
                    time++;
                } else {
                    time--;
                }
                // 使用Handler来进行线程之间通信，这里不能直接操控UI线程，该线程为子线程，不能操作主线程
                new Handler(Looper.getMainLooper()).post(() -> {
                    listener.valueChanged(time);
                });
            }
        }, duration, duration);
    }

    // 暂停定时器
    public void stop() {
        timer.cancel();
    }

    // 销毁定时器
    public void cancel() {
        timer.cancel();
    }

    // 顺序枚举
    public enum Order {
        ASCENDING,
        DESCENDING
    }

    // 定时器监听接口（监听的是哪个activity）
    public interface TimerListener {
        void valueChanged(int value);

        void timeStated();

        void timerCanceled();
    }
}
